package com.web.controller;

import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.POST;
import com.web.model.PageEdit;
import com.web.model.PageInfo;
import org.apache.log4j.Logger;

import java.util.List;

/**
 * Created by reeves on 2015/10/8.
 * 此类用于每天linux crontab定时访问的接口，把当天要推送的信息复制到
 */
public class CrontabController extends Controller {
    private static final Logger LOGGER = Logger.getLogger(CrontabController.class);

    /**
     * 将page_edit当天要推送的信息的isReady置为1，自动实现全部文章审核通过
     * 访问接口：http://121.40.188.62/editorJfinalProject/crontab/acceptArticle
     *
     * 此接口访问方式只能是POST
     */
    @Before(POST.class)
    public void acceptArticle(){
        boolean acceptAllArticleResult = PageEdit.pageEditDao.acceptAllArticle();
        setAttr("acceptAllArticleResult",acceptAllArticleResult);
        renderJson();
    }


    /**
     * 将page_edit中的要今天推送的信息拷贝到page_info表中
     * 访问接口：http://121.40.188.62/editorJfinalProject/crontab/updateDataBase
     *
     * 此接口访问方式只能是POST
     *
     */
    @Before(POST.class)
    public void updateDataBase() {

        /**
         * 1.从page_edit表中获取当前要推送的信息
         */
        List<PageEdit> pageEditList = PageEdit.pageEditDao.getTodayInfo();

        if (pageEditList == null) {
            LOGGER.error("从page_edit中取出当前要推送的信息错误,取出来的pageEditList为null");
        }

        /**
         * 2.去掉page_info中现有推荐信息的标志（推荐界面中出Banner之外的所有信息）
         */
        boolean updateTodayRecomFlag = PageInfo.pageInfoDao.updateRecomFlag();

        if (!updateTodayRecomFlag){
            LOGGER.error("去掉现有推荐信息的标志出错");
        }

        /**
         * 3.将page_edit中当天要推送的信息拷贝到表page_info中
         */
        boolean insertResult = PageInfo.pageInfoDao.addTodayInfo(pageEditList);

        if(!insertResult){
            LOGGER.error("把从page_edit中取出的信息插入到page_info中出错");
        }

//        setAttr("insertResult",insertResult);
        /**
         * 4.把page_eidt中的isTodayRecom为1的信息在page_info中也设置成1,对应recomPos也设置好
         */
        boolean setTodayRecomFlag = PageInfo.pageInfoDao.setTodayRecomFlag();

        if(!setTodayRecomFlag){
            LOGGER.error("把page_edit中 isTodayRecom为1的信息在page_info中isTodayRecom也设置成1出错");
        }

        /**
         * 刷新page_edit设置 isTodayRecom 为1的信息 isTodayRecom 置0
         */
        boolean updateEditTodayRecom = PageEdit.pageEditDao.updateEditTodayRecom();

        if (!updateEditTodayRecom){
            LOGGER.error("刷新page_edit设置 isTodayRecom 为1的信息 isTodayRecom 置0出错");
        }

        /**
         * 6.把拷贝过的信息的isValid设置成0
         */
        boolean freshResult = PageEdit.pageEditDao.updateEditValid();

        if (!freshResult){
            LOGGER.error("更新page_edit中信息有效位出错");
        }

        setAttr("insertResult", insertResult);
        renderJson();
    }
}
